//package jdbc;
//import java.sql.Connection;
//import java.sql.DriverManager;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.sql.Statement;
//import java.util.ArrayList;
//import java.util.HashMap;
//
///**
// * 
// * This Singletone Class is common for all methods, that want to communicate with MySql database
// * 
// * @author eugen
// *
// */
//public class JDBCConnection
//{
//	
//	public static void main(String[] args)
//	  {
//	    new JDBCConnection();
//	  }
//
//  private static Connection connection = null;
//
//
//  	private boolean lock = false;
//	
//	private Statement statement;
//	private ResultSet resultSet;
//	 
//	private static volatile JDBCConnection instance;
//	
//	private JDBCConnection(){
//		
//	}
//
//	  /**
//	   * Creates Connection to Database
//	   */
//	  public static JDBCConnection getInstance(){
//		 
//		  if(instance==null)
//			  synchronized (JDBCConnection.class){
//				  if(instance == null)
//					  instance = new JDBCConnection();
//			  }
//	  
//		  return instance;
////    test();
//  }
//
//private void test() {
//	try
//    {
//    	//TODO driver ponjat
//      Class.forName("com.mysql.jdbc.Driver").newInstance();
////      String url = "jdbc:mysql://"+DB_URL+":"+3306+"/"+DB_NAME;
////      conn = DriverManager.getConnection(url, "root", "");
//    }
//    catch (ClassNotFoundException ex) {System.err.println(ex.getMessage());}
//    catch (IllegalAccessException ex) {System.err.println(ex.getMessage());}
//    catch (InstantiationException ex) {System.err.println(ex.getMessage());}
////    catch (SQLException ex)           {System.err.println(ex.getMessage());}
//}
//
///**
// * execute user-created-query
// * @param query
// * @return
// */
// public ResultSet queryExecute(String query){
//	 
//	 connection = null;
//	  
//	 statement = null;
//	  
//	 resultSet = null;
//	 
//	 try {
//		connection = DriverManager.getConnection(DatabaseUtils.JDBC_url, DatabaseUtils.DB_LOGIN, DatabaseUtils.DB_PASSWORD);
//
//		statement = connection.createStatement();
//
//		resultSet = statement.executeQuery(query);
//		
//	} catch (SQLException e) {
//		// TODO Auto-generated catch block
//		e.printStackTrace();
//	}
//    
//     return resultSet;
// }
//  
// /**
//  * elegant close MySql Connection, in order to avoid database conflicts
//  */
// public void closeConnection(){
// 	JDBCCloser.close(resultSet);
//	
//	JDBCCloser.close(statement);
//	
//	JDBCCloser.close(connection);
// }
//  
// /**
//  * 
//  * select query
//  * 
//  * @param tableName
//  * @param SelectColNames
//  * @return
//  */
//  public ArrayList<HashMap<String, Object>> doSelect(String tableName, String[] SelectColNames)
//  {    
//	 return doSelect(tableName, SelectColNames, "", "");
//  }
// 
//  public ArrayList<HashMap<String, Object>> doSelect(String tableName, String[] SelectColNames, String selectWhereCondition)
//  {    
//	  return doSelect(tableName, SelectColNames, selectWhereCondition, "");
//  }
//  
//  
//
//  
//  public ArrayList<HashMap<String, Object>> doSelect(String tableName, String[] selectColNames, String selectWhereCondition, String orderByColName)
//  {    
//	  connection = null;
//	  
//	  Statement statement = null;
//	  
//	  ResultSet resultSet = null;
//	  
//
//	  
//	  String query = "SELECT ";
//	
//	//Add colls to query
//	for (int i = 0; i < selectColNames.length; i++) {
//		query += selectColNames[i];
//		
//		if(i < selectColNames.length-1)
//			query += ", ";
//	}
//	
//	query +=" FROM "+tableName;
//	
//	if(!selectWhereCondition.equals(""))
//		query +=" WHERE "+selectWhereCondition;
//
//	if(!orderByColName.equals(""))
//		query +=" ORDER BY "+orderByColName;
//	
//	
//	
//    try
//    {
//    	
////    	String url = "jdbc:mysql://localhost:3306/" + DB_NAME;
//    	connection = DriverManager.getConnection(DatabaseUtils.JDBC_url, DatabaseUtils.DB_LOGIN, DatabaseUtils.DB_PASSWORD);
//    	
//       statement = connection.createStatement();
//      
//      ArrayList<HashMap<String, Object>> selectResult  = new ArrayList<HashMap<String, Object>>();
//      
//      resultSet = statement.executeQuery(query);
//    
//      while (resultSet.next())
//        {
//    	  
//    	  HashMap<String, Object> rowResult = new HashMap<String, Object>();
//    	  
//    	  for (int i = 0; i < selectColNames.length; i++) {
//
//    		  String nextColName = selectColNames[i];
//		
////    		  int colIndex = rs.findColumn(nextColName);
//    		  
//    		  Object value = resultSet.getObject(nextColName);
//    		  
//    		  rowResult.put(nextColName, value);
// 		}
//    	  
//    	  selectResult.add(rowResult);
////          String s = rs.getString("COF_NAME");
////          float n = rs.getFloat("PRICE");
////          System.out.println(s + "   " + n);
//        }
//     
//    
//   
//      return selectResult;
//      
////      while (rs.next())
////      {
////        String s = rs.getString("COF_NAME");
////        float n = rs.getFloat("PRICE");
////        System.out.println(s + "   " + n);
////      }
//    }
//    catch (SQLException ex)
//    {
//      System.err.println(ex.getMessage());
//    }
//    finally{
//    	
//    	JDBCCloser.close(resultSet);
//    		
//    	JDBCCloser.close(statement);
//    	
//    	JDBCCloser.close(connection);
//    	
//    }
//	return null;
//  }
//
//  /**
//   * this method makes insert query 
//   * 
//   * @param tableName
//   * @param insertColNames
//   * @param insertColValues
//   * @return int confirm
//   */
// public  int doInsert(String tableName, String[] insertColNames, Object[] insertColValues)
//  {
//	  
//	 
//	if(insertColNames.length != insertColValues.length){
//	
//		System.err.println("insertColNames.length != insertColValues.length");
//		
//		return -1;
//	}
//		
//	 
//	connection = null;
//
//	Statement statement = null;
//		
// 	 
//	 
//     try
//    {
//    	 
//    connection = DriverManager.getConnection(DatabaseUtils.JDBC_url, DatabaseUtils.DB_LOGIN, DatabaseUtils.DB_PASSWORD);
//    	 
//      Statement st = connection.createStatement();
//      
//      String insertQuery = "INSERT INTO "+tableName +" (";
//      
//      //Add ColNames to Query
//      for (int i = 0; i < insertColNames.length; i++) {
//		String nextColName = insertColNames[i];
//		insertQuery += nextColName+" ";
//		
//		if( i < insertColNames.length-1)
//			insertQuery += ", ";
//		
//      }
//      
//      
//      insertQuery += ") VALUES (";
//    	  
//     //Add ColValues to Query	  
//      for (int j = 0; j < insertColValues.length; j++) {
//		Object nextColValue = insertColValues[j];
//		
//		if(nextColValue.getClass().equals(String.class)) // If String, add: ' '
//			insertQuery += "'"+nextColValue+"'";
//		else
//			insertQuery +=  nextColValue;	
//		
//		if( j < insertColValues.length-1)
//			insertQuery += ", ";
//      }	  
//    	  
//      insertQuery +=  ")";
//    	  
//      int confirm = st.executeUpdate(insertQuery);
//      
//       
//      
//      return confirm;
//      
//    }
//    catch (SQLException ex)
//    {
//      System.err.println(ex.getMessage());
//    }
//    finally{
//    	JDBCCloser.close(statement);
//    	JDBCCloser.close(connection);
//    }
// 
//    
//	return -1;
//  }
//
// public  int doUpdate(String tableName, String[] colNames, Object[] colValues){
//	 return doUpdate(tableName, colNames, colValues,"");
// }
//
// /**
//  * this method executes update query
//  * @param tableName
//  * @param updateColNames
//  * @param updateColValues
//  * @param updateWhereCondition
//  * @return
//  */
// 
//  public  int doUpdate(String tableName, String[] updateColNames, Object[] updateColValues, String updateWhereCondition)
//  {
//	  
//		if(updateColNames.length != updateColValues.length){
//			
//			System.err.println("insertColNames.length != insertColValues.length");
//			
//			return -1;
//		}
//	  
//		connection = null;
//
//		Statement statement = null;
// 
//		
//	  String updateQuery= "UPDATE "+ tableName +" SET ";
//	  
//	  //Add ColValues to Query	  
//      for (int j = 0; j < updateColValues.length; j++) {
//		String nextColName = updateColNames[j];
//		Object nextColValue = updateColValues[j];
//		
//		updateQuery += " " + nextColName + " = ";
//		
//		if(nextColValue.getClass().equals(String.class)) // If String, add: ' '
//			updateQuery += "'"+nextColValue+"'";
//		else
//			updateQuery +=  nextColValue;	
//		
//	
//		
//		if( j < updateColValues.length-1)
//			updateQuery += ", ";
//      }	  
//	  
//	 
//	  if(!updateWhereCondition.equals(""))
//		  updateQuery += " WHERE " + updateWhereCondition;
//	
//		  
//		  
//      try
//    {	 
//      connection = DriverManager.getConnection(DatabaseUtils.JDBC_url, DatabaseUtils.DB_LOGIN, DatabaseUtils.DB_PASSWORD);
//      	
//      statement = connection.createStatement();
//      int confirm = statement.executeUpdate(updateQuery);
//      
//      
//      
//      return confirm;
//    }
//    catch (SQLException ex)
//    {
//      System.err.println(ex.getMessage());
//    } finally{
//    	 
//    	JDBCCloser.close(statement);
//    	JDBCCloser.close(connection);
//
//}
//	return -1;
//  }
//
//  /**
//   * Update or Insert Value DB : Check first if value exists in DB
//   * 
//   * @param tableName
//   * @param colNames
//   * @param colValues
//   * @param selectWhere
//   * @return
//   */
//  public int doInsertOderUpdate(String tableName, String[]  colNames, String[]  colValues,  String selectWhere){
//
//		ArrayList<HashMap<String, Object>> selectResult = doSelect(tableName, colNames, selectWhere);
// 
//		if(selectResult.isEmpty()){
//							
//			return doInsert(tableName, colNames, colValues);
//		}
//		else{
//			
//			return doUpdate(tableName, colNames, colValues, selectWhere);
//		}
// 
//  }
//  
//  
////  private void doDelete()
////  {
////    System.out.print("\n[Performing DELETE] ... ");
////    try
////    {
////      Statement st = connection.createStatement();
////      st.executeUpdate("DELETE FROM COFFEES WHERE COF_NAME='BREAKFAST BLEND'");
////    }
////    catch (SQLException ex)
////    {
////      System.err.println(ex.getMessage());
////    }
////  }
//}